home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen… 1994 February Supplement / ARPL-Feb-94-Supplement-PowerPC.iso / 3rd Party PowerPC Demo Apps / Aldus FreeHand / Aldus FreeHand 4.0 TV / Aldus FreeHand 4.0 TV.rsrc / Post_1146 < prev    next >
Encoding:
Text File  |  1994-01-25  |  2.4 KB  |  108 lines

  1. userdict begin /ropedict 85 dict def end 
  2. ropedict begin 
  3. /blocksetup
  4. { q translate rotate scale n } def 
  5. /blockend
  6. { closepath fill } def
  7. /blockfinish
  8. { closepath fill Q } def
  9. /movetoproc { 
  10. dup /sby xdf 
  11. /spy xdf 
  12. dup /sbx xdf 
  13. /spx xdf 
  14. sbx sby m
  15. } def
  16. /1stlinetoproc 
  17. { /esy xdf /esx xdf 
  18. blockdata 
  19. /totdist totdist dist add def
  20. /sbx esx def /sby esy def
  21. deltax 0 ne deltay 0 ne and
  22. { /prevtotdeltax deltax def /prevtotdeltay deltay def } if
  23. } def
  24. /2ndlinetoproc 
  25. { /esy xdf /esx xdf 
  26. bdflag false eq 
  27. {blockdata esx spx eq esy spy eq and{lastsegdist}if}if 
  28. offset ldelta add dist le 
  29. deltax 0 eq deltay 0 eq and
  30.  {/ang 0 def}{/ang deltay deltax atan def}ifelse
  31.  offset 0 lt 
  32.  {/prevang prevdeltax 0 eq prevdeltay 0 eq and
  33. {0}{prevdeltay neg prevdeltax neg atan}ifelse def
  34. ang prevang sub abs dup 120 le exch 240 ge or
  35. {/offset 0 def bdflag true eq
  36. lastsegdist
  37. }if 
  38. }if
  39.  }if
  40.  offset ldelta dist
  41.  {/curdelta xdf  
  42. /ldeltax ang cos curdelta ldelta 2 div add mul def
  43. /ldeltay ang sin curdelta ldelta 2 div add mul def
  44. bll2 blw ang sbx ldeltax add sby ldeltay add drawblock
  45. /offset curdelta ldelta add dist sub def
  46. ldelta offset abs .001 add gt {exit} if
  47.  }for
  48.  /prevdeltax deltax def  /prevdeltay deltay def
  49. /deltax 0 def /deltay 0 def
  50.  
  51. /sbx esx def /sby esy def 
  52. }if
  53. }def
  54. /1stcloseproc 
  55. { spx spy 1stlinetoproc
  56. }def
  57. /2ndcloseproc 
  58. {sbx spx ne sby spy ne or{
  59.  
  60.  
  61.  
  62.  /esx spx def  /esy spy def blockdata  /bdflag true def lastsegdist
  63.  spx spy 2ndlinetoproc}if
  64. }def
  65.  
  66. /blockdata 
  67. { /deltay esy sby sub def 
  68. /deltax esx sbx sub def
  69. /dist deltay dup mul deltax dup mul add sqrt def
  70. }def
  71. /lastsegdist 
  72. {/dist dist offset sub ldelta div round ldelta mul offset add def
  73. }def
  74. end 
  75. /newrope 
  76.  {
  77.  supdict begin  
  78.  ropedict begin   
  79.  /color xdf 
  80.  colorchoice
  81.  /spacing xdf
  82.  /blw xdf 
  83.  /bll xdf 
  84.  /drawblock xdf
  85.  
  86.  q {flattenpath}fp
  87.  /totdist 0 def   /totdeltax 0 def  /totdeltay 0 def
  88.  
  89.  {movetoproc} {1stlinetoproc} {} {1stcloseproc} pathforall
  90.  /nm totdist bll spacing add div def 
  91.  /nm2 nm floor def  
  92.  nm2 0 ne
  93. {
  94. /fr nm nm2 sub def 
  95. /nm2 fr 0.5 ge {nm2 1 add} {nm2} ifelse def 
  96. /bll2 fr 0.5 ge {fr 1.0 sub} {fr} ifelse 
  97. bll spacing add mul nm2 div bll add spacing add def 
  98. /ldelta bll2 def 
  99. /bll2 bll2 bll bll spacing add div mul def
  100. /offset 0 def /totdeltax 0 def /totdeltay 0 def /cnt 0 def
  101. /prevtotdeltax 0 def /prevtotdeltay 0 def /bdflag false def
  102. {movetoproc} {2ndlinetoproc} {} {2ndcloseproc} pathforall
  103. } if
  104.  Q n end end  
  105.  } def